home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
zugabe
/
va45
/
visual45
/
objects
/
form
/
button.s
next >
Wrap
Text File
|
1998-08-17
|
5KB
|
176 lines
DATA
GWVA_FBUTTON_DEFAULT_METHODLIST:
GWVA_OBJ_STRUCT_METHOD GWVA_METHOD_FORM_CLICK,GWVA_FBUTTON_PRG_CLICK
GWVA_OBJ_STRUCT_METHOD GWVA_METHOD_FORM_IFACE_CLICK,GWVA_FBUTTON_PRG_IFACE_CLICK
GWVA_OBJ_STRUCT_METHOD_END_LIST
TEXT
;------------------------------------------------------------------------------
; Method name : GWVA_METHOD_FORM_IFACE_CLICK
; Asm label : GWVA_FBUTTON_PRG_IFACE_CLICK
; Description : Regénération d'un clic sur cet objet
;
; in : a0.l = pointeur sur l'objet
; in : a1.l = pointeur sur la fenetre contenant l'objet
; out : d6.w = GWVA_PRGRET_CONSUMED
;
; 16/08/98 : Création
;------------------------------------------------------------------------------
GWVA_FBUTTON_PRG_IFACE_CLICK:
; bidouille infaame (ne marche pas si objet encapsulé)
move.l GWVA_OBJ_FATHER_PTR(a0),a1
clr.l d0
move.w GWVA_FBTON_OBJ_MAIN_IDX(a0),d0
move.l #1,d1 ; droit
move.l #1,d2 ; 1 clic
move.l a1,a4
lea GWVA_FORM_CLICK_IN_STRUCT,a1
move #0,GWVA_FORM_CLICK_IN_FATHER_IDX(a1) ; je le connais pas ...
move.l a4,GWVA_FORM_CLICK_IN_WIND_PTR(a1)
move.l GWVA_WRSC_OBJ_TREE_PTR(a4),GWVA_FORM_CLICK_IN_TREE_PTR(a1)
GWVA_CALL_METHOD_DIFF_METH_SAME_CLASS #GWVA_METHOD_FORM_CLICK
rts
;------------------------------------------------------------------------------
; Method name : GWVA_METHOD_FORM_CLICK
; Asm label : GWVA_FBUTTON_PRG_CLICK
; Description : Méthode de traitement d'un clic dans un formulaire
;
; Rq : cette méthode traite tout ce qui est bouton, sauf radio-bouton
;
; in : a0.l = pointeur sur l'objet
; in : a1.l = pointeur sur le buffer d'entrée typé GWVA_FORM_CLICK_IN
; in : d0.l = [ X.w | num gem.w ]
; in : d1.l = [ Y.w | mouse button.w ]
; in : d2.l = [ Key state.w | mouse count.w ]
; out : d6.w = GWVA_PRGRET_NOT_CONSUMED ou GWVA_PRGRET_CONSUMED
;
; 14/02/98 : Création
; 07/03/98 : Appel du form_button
;------------------------------------------------------------------------------
GWVA_FBUTTON_PRG_CLICK:
GWVA_EXEC_VISUAL_EVENT #GWVA_METHOD_ON_FORM_CLICK
cmp.w #GWVA_SEARCH_EXEC_CONSUMED,d6
beq .pas_buttonclick_car_on_buttonclick_consomme
;-----------------------------------;
cmp.w GWVA_FBTON_OBJ_MAIN_IDX(a0),d0
bne .je_ne_suis_pas_concerne_par_ce_msg
lea FBUTTON_TMP_IN_BUF,a3
move.l GWVA_FORM_CLICK_IN_WIND_PTR(a1),GWVA_FORM_BUTTON_IN_WIND_PTR(a3)
move.l GWVA_FORM_CLICK_IN_TREE_PTR(a1),GWVA_FORM_BUTTON_IN_TREE_PTR(a3)
save.l a1 ; seul ce paramètre bouge
move.l a3,a1
lea FBUTTON_TMP_OUT_BUF,a2
GWVA_CALL_METHOD_DIFF_METH_SAME_CLASS #GWVA_METHOD_FORM_BUTTON
move.w GWVA_FORM_BUTTON_OUT_NEW_STATE(a2),d3
move.w d3,GWVA_FBTON_OBJ_STATE(a0)
move.w GWVA_FORM_BUTTON_OUT_NEW_TYPE(a2),d4
move.w GWVA_FORM_BUTTON_OUT_OLD_STATE(a2),d5
move.w GWVA_FORM_BUTTON_OUT_RET_CODE(a2),d6
load.l a1 ; seul ce paramètre bouge
; pas d'after donc on peut scratcher les params d'entrée
; on positionne a1/a2, car ils servent pour tous les évènements
move.l GWVA_FORM_CLICK_IN_TREE_PTR(a1),a2 ; tant que a1 est bon
move.l GWVA_FORM_CLICK_IN_WIND_PTR(a1),a1
;-----------------------------------;
; émettre clicked / changed ...
* btst #DISABLED,d3 ; ceci est fait dans le form button
* bne .object_disabled
save.l d0-d2
tst d6
bne .propriete_exit_non_activee
cmp.w d5,d3
bne.s .etat_a_change
; Attention : positionner les paramètres d'entrée + sauver les courants
; ! on ne prépare pas les paramètres comme il faut pour le moment !
swap d0
move.w d1,d0
swap d0
move.w d4,d1 ; type
swap d1
move d3,d1 ; state
cmp.w #2,d2
beq.s .double_click
swap d2
GWVA_EXEC_VISUAL_EVENT #GWVA_METHOD_FORM_CLICKED
bra.s .clicked_ok
.double_click:
swap d2
GWVA_EXEC_VISUAL_EVENT #GWVA_METHOD_FORM_DCLICKED
.clicked_ok:
bra.s .fin_click_ok
;-------------------;
.propriete_exit_non_activee:
cmp.w d5,d3
beq.s .etat_a_pas_change
.etat_a_change:
move.w d4,d1 ; type
swap d1
move d3,d1 ; state
swap d2
; Attention : positionner les paramètres d'entrée + sauver les courants
GWVA_EXEC_VISUAL_EVENT #GWVA_METHOD_FORM_CHANGED
btst #SELECTED,d1 ; ruse : d3 se retrouve dans d1
beq.s .pas_selectionne
; Attention : positionner les paramètres d'entrée + sauver les courants
GWVA_EXEC_VISUAL_EVENT #GWVA_METHOD_FORM_SELECTED
bra.s .fin_click_ok
.pas_selectionne:
; Attention : positionner les paramètres d'entrée + sauver les courants
GWVA_EXEC_VISUAL_EVENT #GWVA_METHOD_FORM_UNSELECTED
.etat_a_pas_change:
.fin_click_ok:
load.l d0-d2
;-----------------------------------;
.pas_buttonclick_car_on_buttonclick_consomme:
moveq #GWVA_PRGRET_CONSUMED,d6
rts
.je_ne_suis_pas_concerne_par_ce_msg:
moveq #GWVA_PRGRET_NOT_CONSUMED,d6
rts
BSS
FBUTTON_TMP_IN_BUF: ds.b GWVA_FORM_BUTTON_IN_STRUCT_LENGTH
FBUTTON_TMP_OUT_BUF: ds.b GWVA_FORM_BUTTON_OUT_STRUCT_LENGTH
TEXT
;------------------------------------------------------------------------------